package com.ideaaedi.springcloud.jd.message.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ideaaedi.springcloud.jd.commonds.entity.message.po.MsgChannelSourcePO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.req.MsgChannelSourceAddReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.req.MsgChannelSourceBatchAddReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.req.MsgChannelSourceListReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.req.MsgChannelSourceUpdateReqVO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.resp.MsgChannelSourceBatchAddRespVO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.resp.MsgChannelSourceDetailRespVO;
import com.ideaaedi.springcloud.jd.commonds.entity.message.vo.resp.MsgChannelSourceListRespVO;
import com.ideaaedi.springcloud.jd.commonds.entity.PageInfo;
import org.springframework.lang.Nullable;

/**
 * <p>
 * 消息-入方向渠道 服务类
 * </p>
 *
 * @author <font size = "20" color = "#3CAA3C"><a href="https://gitee.com/JustryDeng">JustryDeng</a></font> <img src="https://gitee.com/JustryDeng/shared-files/raw/master/JustryDeng/avatar.jpg" />
 * @since 2021.0.5.B
 */
public interface MsgChannelSourceService extends IService<MsgChannelSourcePO> {

    /**
     * 增
     *
     * @param req 参数
     * @param queryDetail true-查询并返回详情; false-返回null
     *
     * @return 新增的数据详情（当queryDetail为true时，返回null）
     */
    @Nullable
    MsgChannelSourceDetailRespVO add(MsgChannelSourceAddReqVO req, boolean queryDetail);

    /**
     * 批量增
     *
     * @param req 参数
     *
     * @return 批量新增结果
     */
    MsgChannelSourceBatchAddRespVO batchAdd(MsgChannelSourceBatchAddReqVO req);

    /**
     * 删
     *
     * @param id 要删除数据的id
     *
     * @return 删除了的数据详情
     */
    MsgChannelSourceDetailRespVO delete(Long id);

    /**
     * 改
     *
     * @param req 参数
     *
     * @return 修改后的数据详情
     */
    @Nullable
    MsgChannelSourceDetailRespVO update(MsgChannelSourceUpdateReqVO req);

    /**
     * 查详情
     *
     * @param id 要查询数据的id
     *
     * @return 数据详情
     */
    @Nullable
    MsgChannelSourceDetailRespVO detail(Long id);

    /**
     * 查列表
     *
     * @param req 参数
     *
     * @return 数据列表
     */
    PageInfo<MsgChannelSourceListRespVO> list(MsgChannelSourceListReqVO req);
}
